home *** CD-ROM | disk | FTP | other *** search
-
- {
- if(true)
- {
- CTCollideShape = §§newclass(CTCollideShape,CTCollide);
- }
- }
-
- package Local.Game.Thing
- {
- import Local.Game.World.*;
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
-
- public class CTCollideShape extends CTCollide
- {
-
-
- private var _Rect:Rectangle;
-
- private var mLastPosition:CPosition;
-
- private var mLastOrientation:Number;
-
- private var mLastAngle:CAngle;
-
- private var pMid:CPosition;
-
- private var pPoints:Array;
-
- private var mPairs:Array;
-
- private var mPoints:Array;
-
- public function CTCollideShape(param1:*, param2:Array, param3:CPosition)
- {
- var _loc4_:CPosition = null;
- var _loc5_:* = 0;
- var _loc6_:int = 0;
- super(param1);
- mPoints = param2;
- pPoints = new Array();
- mPairs = new Array();
- for each(_loc4_ in mPoints)
- {
- if(true)
- {
- pPoints.push(_loc4_.Clone());
- }
- }
- §§push(0);
- if(true)
- {
- _loc5_ = §§pop();
- _loc6_ = int(pPoints.length);
- while(true)
- {
- §§push(_loc5_);
- addr61:
- mPairs.push({
- "p1":pPoints[_loc5_],
- "p2":pPoints[(_loc5_ + 1) % _loc6_]
- });
- _loc5_++;
- }
- addr85:
- }
- while(§§pop() < _loc6_)
- {
- §§goto(addr61);
- §§goto(addr85);
- }
- param3 = !!param3 ? param3 : new CPosition();
- if(true)
- {
- pPoints.push(pMid = param3.Clone());
- if(true)
- {
- mPoints.push(param3);
- if(true)
- {
- mLastAngle = new CAngle();
- if(true)
- {
- mLastPosition = new CPosition();
- }
- mLastOrientation = 0;
- }
- _Rect = new Rectangle();
- }
- Update();
- }
- }
-
- override public function CollideBox(param1:Rectangle) : Boolean
- {
- return false;
- }
-
- override public function CollideRadius(param1:CPosition, param2:Number) : Boolean
- {
- return Point.distance(param1,mMid) <= param2;
- }
-
- override public function get mMid() : CPosition
- {
- return pMid.Clone();
- }
-
- private function OrientatePoints(param1:Array, param2:Array, param3:CPosition) : void
- {
- var _loc4_:* = NaN;
- var _loc5_:* = NaN;
- var _loc6_:* = NaN;
- var _loc7_:* = NaN;
- var _loc8_:* = NaN;
- var _loc9_:* = 0;
- var _loc10_:Point = null;
- §§push(mAngle.mAngleRAD);
- if(true)
- {
- _loc4_ = §§pop();
- §§push(Math.sin(_loc4_));
- if(true)
- {
- _loc5_ = §§pop();
- §§push(Math.cos(_loc4_));
- if(true)
- {
- _loc6_ = §§pop();
- §§push(_loc5_);
- if(true)
- {
- §§push(§§pop() * mOrientation);
- }
- _loc7_ = §§pop();
- §§push(_loc6_);
- }
- §§push(§§pop() * mOrientation);
- }
- §§push(§§pop());
- }
- _loc8_ = §§pop();
- §§push(0);
- if(true)
- {
- _loc9_ = §§pop();
- §§push(0);
- }
- for each(_loc10_ in param1)
- {
- param2[_loc9_++].SetXY(_loc10_.x * _loc8_ - _loc10_.y * _loc5_ + param3.x,_loc10_.x * _loc7_ + _loc10_.y * _loc6_ + param3.y);
- }
- }
-
- override public function Update() : void
- {
- if(true)
- {
- CacheShape();
- }
- }
-
- private function CacheShape() : void
- {
- var _loc1_:Rectangle = null;
- var _loc2_:Object = null;
- var _loc3_:CPosition = null;
- var _loc4_:CPosition = null;
- §§push(mLastAngle.mAngle == mAngle.mAngle);
- if(true)
- {
- §§push(!§§pop());
- if(true)
- {
- if(!§§pop())
- {
- if(true)
- {
- §§pop();
- §§push(mLastPosition);
- if(true)
- {
- §§push(§§pop().x == mPosition.x);
- if(true)
- {
- §§push(!§§pop());
- if(true)
- {
- addr48:
- if(!§§pop())
- {
- §§pop();
- §§push(mLastPosition);
- if(true)
- {
- §§goto(addr59);
- }
- §§goto(addr72);
- }
- }
- §§goto(addr59);
- }
- addr59:
- §§push(§§pop().y != mPosition.y);
- if(!(§§pop().y != mPosition.y))
- {
- addr61:
- §§pop();
- §§goto(addr66);
- }
- addr66:
- §§goto(addr65);
- }
- §§goto(addr76);
- }
- §§goto(addr61);
- }
- §§goto(addr48);
- }
- addr65:
- if(mLastOrientation != mOrientation)
- {
- mLastAngle.mAngle = mAngle.mAngle;
- addr72:
- mLastPosition.x = mPosition.x;
- addr76:
- mLastPosition.y = mPosition.y;
- mLastOrientation = mOrientation;
- OrientatePoints(mPoints,pPoints,mPosition);
- _Rect.x = mPairs[0].p1.x;
- _Rect.y = mPairs[0].p1.y;
- _Rect.width = 1;
- _Rect.height = 1;
- _loc1_ = new Rectangle(0,0,1,1);
- for each(_loc2_ in mPairs)
- {
- _loc3_ = _loc2_.p1;
- _loc4_ = _loc2_.p2;
- _loc2_.dx = _loc4_.x - _loc3_.x;
- _loc2_.dy = _loc4_.y - _loc3_.y;
- if(_loc3_.x < _Rect.left)
- {
- _Rect.left = _loc3_.x;
- }
- else if(_loc3_.x > _Rect.right)
- {
- _Rect.right = _loc3_.x;
- }
- if(_loc3_.y < _Rect.top)
- {
- _Rect.top = _loc3_.y;
- }
- else if(_loc3_.y > _Rect.bottom)
- {
- _Rect.bottom = _loc3_.y;
- }
- }
- }
- return;
- }
- §§goto(addr61);
- }
-
- override public function get mRect() : Rectangle
- {
- return _Rect.clone();
- }
-
- override public function CollideLine(param1:CPosition, param2:CPosition, param3:Boolean = false) : *
- {
- var _loc4_:Number = NaN;
- var _loc5_:Number = NaN;
- var _loc6_:Boolean = false;
- var _loc7_:CPosition = null;
- var _loc8_:CPosition = null;
- var _loc9_:Number = NaN;
- var _loc10_:Number = NaN;
- var _loc11_:Object = null;
- var _loc12_:Number = NaN;
- var _loc13_:Number = NaN;
- var _loc14_:Number = NaN;
- var _loc15_:Number = NaN;
- var _loc16_:Number = NaN;
- var _loc17_:* = NaN;
- var _loc18_:Number = NaN;
- if(true)
- {
- CacheShape();
- if(true)
- {
- _loc4_ = param2.x - param1.x;
- _loc5_ = param2.y - param1.y;
- }
- _loc6_ = false;
- }
- _loc7_ = new CPosition();
- _loc8_ = param2.Clone();
- if(true)
- {
- _loc9_ = Point.distance(_loc8_,param1);
- }
- var _loc19_:int = 0;
- var _loc20_:* = mPairs;
- while(true)
- {
- for each(_loc11_ in _loc20_)
- {
- _loc12_ = _loc4_ * _loc11_.dy;
- _loc13_ = _loc11_.dx * _loc5_;
- §§push(_loc12_);
- §§push(_loc13_);
- if(true)
- {
- _loc14_ = §§pop() - §§pop();
- if(Math.abs(_loc14_) < 0.00001)
- {
- continue;
- }
- _loc15_ = _loc11_.p1.x - param1.x;
- _loc16_ = _loc11_.p1.y - param1.y;
- §§push(_loc5_);
- §§push(_loc15_);
- if(true)
- {
- §§push(§§pop() * §§pop());
- §§push(_loc4_);
- if(true)
- {
- §§push(_loc16_);
- if(true)
- {
- §§push(§§pop() * §§pop());
- if(true)
- {
- §§push(§§pop() - §§pop());
- §§push(_loc14_);
- if(true)
- {
- §§push(§§pop() / §§pop());
- §§push(§§pop() / §§pop());
- }
- _loc17_ = §§pop();
- §§push(0);
- if(true)
- {
- §§push(§§pop() >= §§pop());
- if(true)
- {
- if(§§pop())
- {
- if(true)
- {
- §§pop();
- §§push(_loc17_);
- §§push(1);
- if(true)
- {
- §§push(§§pop() <= §§pop());
- if(true)
- {
- addr180:
- if(!§§pop())
- {
- continue;
- }
- addr199:
- §§push((_loc18_ = (_loc11_.dx * _loc16_ - _loc11_.dy * _loc15_) / (_loc13_ - _loc12_)) >= 0);
- if(true)
- {
- §§push(§§pop() && _loc18_ <= 1);
- }
- if(!§§pop())
- {
- continue;
- }
- §§push(param3);
- }
- if(§§pop())
- {
- break;
- }
- _loc7_.SetXY(_loc11_.p1.x + _loc17_ * _loc11_.dx,_loc11_.p1.y + _loc17_ * _loc11_.dy);
- if((_loc10_ = Point.distance(_loc7_,param1)) < _loc9_)
- {
- _loc8_.Copy(_loc7_);
- _loc9_ = _loc10_;
- addr251:
- _loc6_ = true;
- }
- continue;
- }
- §§goto(addr199);
- }
- §§goto(addr213);
- }
- §§goto(addr180);
- }
- §§goto(addr251);
- }
- §§goto(addr207);
- }
- }
- }
- }
- }
- §§goto(addr199);
- }
- if(true)
- {
- return param3 ? false : (_loc6_ ? _loc8_ : null);
- }
- §§goto(addr265);
- }
- addr213:
- true;
- return §§pop();
- }
- }
- }
-